package ar.com.ctrln.services.contratacion;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import ar.com.ctrln.persistence.dao.contratacion.ContratacionServicioDao;
import ar.com.ctrln.persistence.dao.contratacion.DetalleContratacionDao;
import ar.com.ctrln.persistence.dao.contratacion.DetalleContratacionInternetDao;
import ar.com.ctrln.persistence.dao.contratacion.DetalleContratacionTelefoniaDao;
import ar.com.ctrln.persistence.model.contratacion.ContratacionServicio;
import ar.com.ctrln.persistence.model.contratacion.DetalleContratacion;
import ar.com.ctrln.persistence.model.contratacion.DetalleContratacionInternet;
import ar.com.ctrln.persistence.model.contratacion.DetalleContratacionTelefonia;

@Service("gestorContratacionServicio")
public class GestorContratacionServicio {

	@Autowired
	private ContratacionServicioDao contratacionDao;

	@Autowired
	private DetalleContratacionInternetDao contratacionInternetDao;

	@Autowired
	private DetalleContratacionTelefoniaDao contratacionTelefoniaDao;

	@Autowired
	private DetalleContratacionDao detalleContratacionDao;

	public ContratacionServicio nuevaContratacion() {
		return new ContratacionServicio();
	}

	public void guardar(ContratacionServicio contratacion) {
		contratacionDao.save(contratacion);
	}

	public List<ContratacionServicio> listar() {
		return contratacionDao.getList();
	}

	public Set<DetalleContratacion> listarDetalles() {
		Set<DetalleContratacion> detalles = new HashSet<DetalleContratacion>();
		for (DetalleContratacion d : detalleContratacionDao.getList()) {
			detalles.add(d);
		}
		return detalles;
	}
	
	public Set<DetalleContratacion> listarDetalles(long id) {
		Set<DetalleContratacion> detalles = new HashSet<DetalleContratacion>();
		for (DetalleContratacion d : detalleContratacionDao.getList(id)) {
			detalles.add(d);
		}
		return detalles;
	}

	public Set<DetalleContratacionInternet> listaContratacionInternet(
			long idContratacion) {
		Set<DetalleContratacionInternet> internet = new HashSet<DetalleContratacionInternet>();

		for (DetalleContratacionInternet detalle : contratacionInternetDao
				.findByContratacion(idContratacion)) {
			internet.add(detalle);
		}

		return internet;
	}

	public Set<DetalleContratacionTelefonia> listaContratacionTelefonias(
			long idContratacion) {
		Set<DetalleContratacionTelefonia> telefonia = new HashSet<DetalleContratacionTelefonia>();

		for (DetalleContratacionTelefonia detalle : contratacionTelefoniaDao
				.findByContratacion(idContratacion)) {
			telefonia.add(detalle);
		}

		return telefonia;
	}

	public List<ContratacionServicio> listar(long idCliente) {
		
		return contratacionDao.listaContratacionCliente(idCliente);
	}
}
